"""
字典：
    字典是另一种可变容器模型，且可存储任意类型对象
    字典的每个键值 key=>value 对用冒号 : 分割，每个对之间用逗号(,)分割，整个字典包括在花括号 {} 中
    键必须是唯一的，但值则不必
    值可以取任何数据类型，但键必须是不可变的，如字符串，数字

    字典键的特性:
        不允许同一个键出现两次。创建时如果同一个键被赋值两次，后一个值会被记住。(相当修改值操作)
        键必须不可变，所以可以用数字，字符串或元组充当，而用列表就不行

    字典内置函数 & 方法：
        函数：
            len(dict)：计算字典元素个数，即键的总数
            str(dict)：输出字典，可以打印的字符串表示
            type(variable)：返回输入的变量类型，如果变量是字典就返回字典类型
        方法：
            dict.clear()：删除字典内所有元素
            dict.copy()：返回一个字典的浅复制
            dict.fromkeys()：创建一个新字典，以序列 sep 中元素做字典的键，val 为字典所有键对应的初始值
            dict.get(key, default=None)：返回指定键的值，如果键不在字典中返回 default 设置的默认值
            key in dict：如果键在字典 dict 里返回 true，否则返回 false
            dict.items()：以列表返回一个视图对象
            dict.keys()：返回一个视图对象
            dict.setdefault(key, default=None)：和get()类似，但如果键不存在于字典中，将会添加键并将值设为default
            dict.update(dict2)：把字典dict2的键/值对更新到dict里
            dict.values()：返回一个视图对象
            dict.pop(key[,default])：删除字典 key（键）所对应的值，返回被删除的值。
            dict.popitem()：返回并删除字典中的最后一对键和值。
"""

# 字典的创建
dict1 = {}  # 创建了一个空字典
print(type(dict1))
dict2 = dict()  # 创建了一个空字典
print(type(dict2))
dict3 = {"python": 100, "c++": 90, "java": 99, "c": 93, 1: 100}  # 创建了一个带有元素的字典
print(type(dict3))
print(dict3)
# 字典长度
print(len(dict3))
# 访问字典里的值：把对应的键放入到方括号中。如果用字典里没有的键访问数据，会输出错误
print(dict3[1])
print(dict3["python"])
# 修改字典
dict3["python"] = 96
print(dict3)
# 添加元素
dict3["p"] = 95
print(dict3)
# 删除字典元素：能删单一的元素也能清空字典，清空只需一项操作。显式删除一个字典用del命令
del dict3["p"]  # 删除键为“p”的元素
print(dict3)
dict3.clear()  # 清空字典
print(dict3)
del dict3   # 删除整个字典，后续不能访问,因为用执行 del 操作后字典不再存在
